#ifndef _CIRCLELINKED_LIST_
#define _CIRCLELINKED_LIST_

// 循环链表的接口

#define Status int
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

// 元素类型
typedef int ElemType;
// CircleLinkedList相当于我们链表的入口, 这里使用尾指针
typedef struct CircleLinkedList {
    ElemType data;
    struct CircleLinkedList *next;
} Node, *CircleLinkedList;

// 初始化
Status InitList(CircleLinkedList *list);

// 判断循环链表是否为空
int ListIsEmpty(CircleLinkedList list);

// 往链表中添加元素
Status AddElem(CircleLinkedList *list, ElemType e);

// 在指定位置 插入, 因为是尾指针, 有可能会移动, 所以需要传入指针类型
Status InsertElem(CircleLinkedList *list, int index, ElemType e);

// 获取指定位置上的元素
Status GetElem(CircleLinkedList list, int index, ElemType *e);

// 置空链表
Status MakeEmpty(CircleLinkedList *list);

// 销毁链表
Status DestroyList(CircleLinkedList *list);

#endif